#include "LinkedList.h"

LinkedList::LinkedList( void )
: m_pTopNode( NULL ), size(0)
{

}

LinkedList::LinkedList( Node *pNode )
: m_pTopNode( pNode ), size(1)
{
	m_pTopNode->pNext = NULL;
}

LinkedList::~LinkedList( void )
{
	ClearList();
}

void LinkedList::AddNode( Node *pNode )
{
	pNode->pNext = m_pTopNode;
	m_pTopNode = pNode;
	++size;
}

void LinkedList::AddNode( int value )
{
	AddNode( new Node( value ) );
}


Node * LinkedList::GetTopNode( void ) const
{
	return m_pTopNode;
}

void LinkedList::RemoveTopNode( void )
{
	if ( m_pTopNode == NULL )
		return; // or NULL

	Node *pTempNode = m_pTopNode;
	m_pTopNode = m_pTopNode->pNext;

	delete pTempNode;
	--size;
}

void LinkedList::ClearList( void )
{
	while ( GetTopNode() != NULL )
	{
		RemoveTopNode();
	}
}


